Tôi gặp sự cố lạ ở đây. Tôi đã cố gắng để tìm hiểu những gì sai trong vài giờ ngay bây giờ. Tôi đã có một chức năng mà nên cập nhật một bảng trong cơ sở dữ liệu của tôi và đặt "date_vente" (date_sold cho tiếng Anh) thành NOW(). Truy vấn rất đơn giản nhưng nó vẫn báo cáo 1 hàng phù hợp, 0 đã thay đổi.Truy vấn MySQL không cập nhật các hàng
Vấn đề là, dữ liệu phải được thay đổi. Nếu tôi chạy các truy vấn bằng tay, nó hoạt động tốt, nếu tôi chạy nó từ các ứng dụng php, nó không thành công ...
//Marque le panier comme vendu
$sqlstring = "UPDATE ".$prefix_tables_panier."paniers SET date_vente = NOW() WHERE no_panier = ".$data_panier["no_panier"];
$result = mysql_query($sqlstring, $conn_panier);
echo $sqlstring.'<br>';
echo mysql_affected_rows($conn_panier); echo '<br>';
echo mysql_error($conn_panier); echo '<br>';
echo mysql_errno($conn_panier); echo '<br>';
var_dump($conn_panier); echo '<br>';
var_dump(mysql_error($conn_panier)); echo '<br>';
var_dump(mysql_info($conn_panier)); echo '<br>';
var_dump(mysql_stat($conn_panier)); echo '<br>';
Và đầu ra là
UPDATE panier_paniers SET date_vente = NOW() WHERE no_panier = 840
0
0
resource(5) of type (mysql link)
string(0) ""
string(40) "Rows matched: 1 Changed: 0 Warnings: 0"
string(145) "Uptime: 1640423 Threads: 5 Questions: 39673341 Slow queries: 0 Opens: 1132 Flush tables: 1 Open tables: 235 Queries per second avg: 24.185" 7
Vấn đề là nó nên viết một giá trị của NGAY BÂY GIỜ cho bảng có chứa các giỏ nhưng nó không phải là. Và không, không phải do kết nối sai, cùng một id kết nối (var_dumped nó) được sử dụng trong hàm ngay trước đó, gọi nó và cả hai đều có cùng id, kết nối vẫn mở và có giá trị là "0000 -00-00 00:00:00 "trong cột tôi đang cố gắng cập nhật ...
Có ai có thể cho tôi thêm một số gợi ý để xem không?
Cảm ơn
CẬP NHẬT
UPDATE panier_paniers SET date_vente = NOW() WHERE no_panier = 840
0
0
resource(5) of type (mysql link)
string(0) ""
string(40) "Rows matched: 1 Changed: 0 Warnings: 0"
string(145) "Uptime: 1641927 Threads: 5 Questions: 39681590 Slow queries: 0 Opens: 1132 Flush tables: 1 Open tables: 235 Queries per second avg: 24.168"
UPDATE panier_paniers SET date_vente = "2011-12-28 12:00:17" WHERE no_panier = 840
1
0
resource(5) of type (mysql link)
string(0) ""
string(40) "Rows matched: 1 Changed: 1 Warnings: 0"
string(145) "Uptime: 1641927 Threads: 5 Questions: 39681591 Slow queries: 0 Opens: 1132 Flush tables: 1 Open tables: 235 Queries per second avg: 24.168"
go
Đây là nhận lạ, RẤT rất lạ!
CẬP NHẬT # 2
CREATE TABLE IF NOT EXISTS `panier_paniers` (
`no_panier` bigint(20) unsigned NOT NULL auto_increment,
`client_prenom` varchar(100) NOT NULL default '',
`client_nom` varchar(100) NOT NULL default '',
`client_entreprise` varchar(150) default NULL,
`client_adresse` varchar(150) NOT NULL default '',
`client_ville` varchar(150) NOT NULL default '',
`client_province_etat` char(2) default NULL,
`client_pays` char(2) NOT NULL default '',
`client_code_postal_zip` varchar(15) NOT NULL default '',
`client_telephone` varchar(20) NOT NULL default '',
`client_type_telephone` enum('domicile','travail','cellulaire') NOT NULL default 'domicile',
`client_telecopieur` varchar(20) default NULL,
`client_courriel` varchar(150) NOT NULL default '',
`client_mailinglist_from` datetime default NULL,
`client_langue` char(2) NOT NULL default '',
`client_no_client` bigint(20) unsigned default NULL,
`expedition_mode` varchar(20) NOT NULL default '',
`expedition_no_livraison` bigint(20) unsigned default NULL,
`expedition_produit` varchar(100) default NULL,
`expedition_produit_no_compte` varchar(100) default NULL,
`expedition_frais_livraison` decimal(10,2) NOT NULL default '0.00',
`expedition_frais_manut` decimal(10,2) NOT NULL default '0.00',
`expedition_assurance` char(1) NOT NULL default 'X',
`expedition_signature` char(1) NOT NULL default 'X',
`expedition_conf_livraison` char(1) NOT NULL default 'X',
`expedition_emballage` text,
`expedition_no_suivi` varchar(100) default NULL,
`expedition_prenom` varchar(100) default NULL,
`expedition_nom` varchar(100) default NULL,
`expedition_entreprise` varchar(150) default NULL,
`expedition_adresse` varchar(150) default NULL,
`expedition_ville` varchar(150) default NULL,
`expedition_province_etat` char(2) default NULL,
`expedition_pays` char(2) default NULL,
`expedition_code_postal_zip` varchar(15) default NULL,
`expedition_telephone` varchar(20) default NULL,
`expedition_type_telephone` enum('domicile','travail','cellulaire') NOT NULL default 'domicile',
`expedition_exporte_ups_connect` char(1) NOT NULL default '',
`expedition_mis_a_jour_ups_connect` char(1) NOT NULL default '',
`paiement_mode` varchar(20) NOT NULL default '',
`paiement_no_paiement` bigint(20) unsigned default NULL,
`paiement_numero_taxe_fed` bigint(20) unsigned NOT NULL default '0',
`paiement_numero_taxe_prov` bigint(20) unsigned NOT NULL default '0',
`paiement_numeros_taxes_speciales` varchar(255) NOT NULL,
`paiement_numero_po` varchar(20) default NULL,
`paiement_numero_bon` varchar(20) default NULL,
`paiement_cc_pa_trnid` varchar(10) default NULL,
`paiement_cc_pa_montant` decimal(10,2) NOT NULL default '0.00',
`paiement_cc_capture` text,
`paiement_desjardins_TxID` varchar(25) default NULL,
`paiement_desjardins_date_envoi` datetime NOT NULL default '0000-00-00 00:00:00',
`date_creation` datetime NOT NULL default '0000-00-00 00:00:00',
`ip_creation` varchar(15) NOT NULL default '',
`host_creation` varchar(255) default NULL,
`date_vente` datetime NOT NULL default '0000-00-00 00:00:00',
`date_annulee` datetime NOT NULL default '0000-00-00 00:00:00',
`date_completee` datetime NOT NULL default '0000-00-00 00:00:00',
`date_inventaire` datetime NOT NULL default '0000-00-00 00:00:00',
`date_acceptation` datetime NOT NULL default '0000-00-00 00:00:00',
`note` text,
`note_client` text,
`no_utilisateur` bigint(20) unsigned default NULL,
PRIMARY KEY (`no_panier`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=841 ;
CẬP NHẬT # 3
Ok, nhìn vào điều ma quái này:
//Marque le panier comme vendu
$sqlstring = 'UPDATE panier_paniers SET date_vente = NOW() WHERE no_panier = '.$data_panier["no_panier"];
$result = mysql_query($sqlstring, $conn_panier);
echo $sqlstring.'<br>';
echo mysql_affected_rows($conn_panier); echo '<br>';
echo mysql_error($conn_panier); echo '<br>';
echo mysql_errno($conn_panier); echo '<br>';
var_dump($conn_panier); echo '<br>';
var_dump(mysql_error($conn_panier)); echo '<br>';
var_dump(mysql_info($conn_panier)); echo '<br>';
var_dump(mysql_stat($conn_panier)); echo '<br>';
$sqlstring='UPDATE panier_paniers SET date_vente = "2011-12-28 10:09:12" WHERE no_panier = '.$data_panier["no_panier"];
mysql_query($sqlstring, $conn_panier);
echo $sqlstring.'<br>';
echo mysql_affected_rows($conn_panier); echo '<br>';
echo mysql_error($conn_panier); echo '<br>';
echo mysql_errno($conn_panier); echo '<br>';
var_dump($conn_panier); echo '<br>';
var_dump(mysql_error($conn_panier)); echo '<br>';
var_dump(mysql_info($conn_panier)); echo '<br>';
var_dump(mysql_stat($conn_panier)); echo '<br>';
Như bạn có thể thấy, cả hai phải hợp lệ, cái đầu tiên sẽ không cập nhật gì cả, cái thứ hai sẽ cập nhật hàng. Chuyển sang xung quanh và kiểm tra một lần nữa:
$sqlstring='UPDATE panier_paniers SET date_vente = "2011-12-28 10:09:12" WHERE no_panier = '.$data_panier["no_panier"];
mysql_query($sqlstring, $conn_panier);
echo $sqlstring.'<br>';
echo mysql_affected_rows($conn_panier); echo '<br>';
echo mysql_error($conn_panier); echo '<br>';
echo mysql_errno($conn_panier); echo '<br>';
var_dump($conn_panier); echo '<br>';
var_dump(mysql_error($conn_panier)); echo '<br>';
var_dump(mysql_info($conn_panier)); echo '<br>';
var_dump(mysql_stat($conn_panier)); echo '<br>';
//Marque le panier comme vendu
$sqlstring = 'UPDATE panier_paniers SET date_vente = NOW() WHERE no_panier = '.$data_panier["no_panier"];
$result = mysql_query($sqlstring, $conn_panier);
echo $sqlstring.'<br>';
echo mysql_affected_rows($conn_panier); echo '<br>';
echo mysql_error($conn_panier); echo '<br>';
echo mysql_errno($conn_panier); echo '<br>';
var_dump($conn_panier); echo '<br>';
var_dump(mysql_error($conn_panier)); echo '<br>';
var_dump(mysql_info($conn_panier)); echo '<br>';
var_dump(mysql_stat($conn_panier)); echo '<br>';
KẾT QUẢ:
UPDATE panier_paniers SET date_vente = "2011-12-28 10:09:12" WHERE no_panier = 840
1
0
resource(5) of type (mysql link)
string(0) ""
string(40) "Rows matched: 1 Changed: 1 Warnings: 0"
string(145) "Uptime: 1643141 Threads: 5 Questions: 39713580 Slow queries: 0 Opens: 1286 Flush tables: 1 Open tables: 219 Queries per second avg: 24.169"
UPDATE panier_paniers SET date_vente = NOW() WHERE no_panier = 840
1
0
resource(5) of type (mysql link)
string(0) ""
string(40) "Rows matched: 1 Changed: 1 Warnings: 0"
string(145) "Uptime: 1643141 Threads: 5 Questions: 39713581 Slow queries: 0 Opens: 1286 Flush tables: 1 Open tables: 219 Queries per second avg: 24.169"
Bây giờ cả cập nhật hoạt động ... Tôi đã cố gắng một xác minh, sửa chữa và tối ưu hóa để xem nếu nó không phải là một vấn đề tham nhũng, không có gì thay đổi ...
Tính năng này có hoạt động nếu bạn chạy truy vấn trong ứng dụng khách MySQL yêu thích của mình không? Loại cột chính xác là gì? –
Kiểu cột là DATETIME và có nó hoạt động nếu tôi chạy thủ công từ phpmyadmin hoặc heidisql ... Hãy nhớ rằng, nó kết thúc hàng, nó phù hợp với nó, do đó, nó không phải là một vấn đề kết nối sai ... –
Xác suất của bạn xem là gì hồ sơ sai? –