我正在尝试创建一个非常简单的Web应用程序,用于检查元素是否在数据库中。
如果元素在DB中至少定位一次,则回显“YES”,否则如果该元素不存在则只回显“NO”。
这是我的代码:
$mysql = mysqli_connect(/* can't share anything here */) or die ("ERROR CONNECTING TO THE DB");
if(isset($_POST['submit'])) {
$theAddress = $_POST['url'];
$result = "SELECT * FROM data WHERE url = " . $theAddress;
$query = mysqli_query($mysql, $result);
if (!$query) {
printf("Error");
} else {
printf("NO ERROR");
}
这里的问题是PHP总是回显“错误”。为什么呢?
答案 0 :(得分:0)
为了成功执行SQL查询,您需要将字符串值放在quote中。
所以你的查询将是:
$result = "SELECT * FROM data WHERE url = '" . $theAddress . "'";
答案 1 :(得分:0)
您需要围绕该值引用,因为它是一个字符串。
$result = "SELECT * FROM data WHERE url = '" . $theAddress . "'";
但如果您学习使用mysqli_stmt_bind_param()
准备好的查询会更好,那么您不必担心这一点。
答案 2 :(得分:0)
尝试使用这样的预处理语句:
$stmt = mysqli_stmt_init($mysql);
if (mysqli_stmt_prepare($stmt, 'SELECT * FROM data WHERE url = ?')) {
mysqli_stmt_bind_param($stmt, "s", $theAddress);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
}
文档:
http://us.php.net/manual/en/mysqli-stmt.prepare.php
http://us.php.net/manual/en/mysqli-stmt.get-result.php