2015-03-02 57 views
-1

我更新用户信息代码:为什么不能运行绑定的MySQL查询?

if($update_stmt = $link_reg->prepare("UPDATE email_pass SET password=?, salt=?, customer_id=?, subscription_id=?, subscription_datetime=? WHERE email=?")){ 
    $update_stmt->bind_param('ssssss', $new_password, $random_salt, $new_customer_id, $new_sub_id, $new_sub_datetime, $new_email); 

    if($update_stmt->errno){ 
     echo($update_stmt->error); 
    } 

    // Execute prepared query 
    if($update_stmt->execute()){ 
     // MORE CODE HERE 
    } else { 
     echo("ERROR?"); 
    } 
} 

当我运行它,我没有得到任何反馈。我的数据表不会更新,但也没有echo消息。

某处出现错误吗?为什么代码不能正确执行?

编辑

下面是一些样本更新的数据和表的列

$new_password = '532a69d8124604e33e9f45a8c9xbea92c342cbd5a3f847f770816dbd97975b2769f52a25806ead6100c1ac1a9a1a4de6b1641279a26854fba7c162caffca8e9f'; 
$random_salt = 'b6a1062d2c07c3aa900cbe9777d4670192f77241ad0b5ceb5f7968e3107f6d719b450d2ac37165e7827f53c2005797c985deddb9bec71724948bcd833ea72e87'; 
$new_customer_id = '19582601'; 
$new_sub_id = 'crj94x'; 
$new_sub_datetime = '2014-02-25 19:41:56'; 
$new_email = '[email protected]'; 

CREATE TABLE语法:

CREATE TABLE `email_pass` (
`row_id` int(11) NOT NULL AUTO_INCREMENT, 
`email` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, 
`password` char(128) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, 
`salt` char(128) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, 
`customer_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, 
`subscription_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, 
`subscription_datetime` datetime NOT NULL, 
PRIMARY KEY (`row_id`) 
) ENGINE=MyISAM AUTO_INCREMENT=239 DEFAULT CHARSET=latin1 
+0

所以你可以告诉我们表中的数据样本?和数据值你尝试更新? – Alex 2015-03-02 18:35:57

+0

如果根本没有回声,那么你有错误报告关闭....所以打开它 – developerwjk 2015-03-02 18:51:58

+0

首先加入'error_reporting(E_ALL);'作为第一行。 – RobIII 2015-03-02 18:53:54

回答

0

我曾尝试你的代码和它的作品。您的代码中有一个WHERE email=?,其中填充了$new_email。可能是因为您正在尝试通过搜索要设置的新电子邮件而不是当前电子邮件地址(或where row_id = ...)来查找要更新的记录?

I.e.您不会收到任何错误,因为您的email = <new email> where子句中没有匹配,因此没有任何更新。

0

Welp,事实证明我忘了给MySQL用户许可UPDATE。它只能是SELECTINSERT