我尝试从mysql迁移到mysqli但这段代码不起作用。我是php和mysql的新手
$link = mysqli_connect("localhost", "user", "password", "db");
/* check connection */
if (mysqli_connect_errno()) { printf("Connect failed: %s\n",
mysqli_connect_error()); exit(); }
if ($result = mysqli_query($link, "SELECT * FROM users WHERE uid='$uid'")) {
if(mysqli_num_rows($result) != 0) {
mysqli_query($link, "UPDATE users SET array='$array' WHERE uid='$uid'");
}
else {mysqli_query($link, "INSERT INTO users (uid,array) VALUES ('$uid','$array')"); }
mysqli_free_result($result); }
/* close connection */
mysqli_close($link);
?>
所以我的问题是:
感谢您花时间回答我的问题。
答案 0 :(得分:0)
您需要将错误报告设置为最高级别并提供错误消息。这样你就可以让PHP告诉你出了什么问题以及需要修复什么。
您必须更改此代码,才能每个变量通过仅占位符
然而,原始的mysqli在准备好的语句中非常糟糕,因此,我建议不要使用它,而是转向PDO或safeMysql。后一个允许您使用相同数量的代码进行安全查询。
if ($db->getOne("SELECT 1 FROM users WHERE uid=?i",$uid))
{
$db->query("UPDATE users SET array=?s WHERE uid=?i",$array,$uid);
} else {
$db->query("INSERT INTO users (uid,array) VALUES (?i,?s)",$uid,$array);
}
顺便说一句,Mysql允许你在 one 中进行所有这三个查询:
$sql = "INSERT INTO users (uid, array) VALUES (?i,?s)
ON DUPLICATE KEY UPDATE array=values(array)";
$db->query($sql, $uid, $array);