mysql有这个非常奇怪的问题。我可以插入并创建表。但是我无法选择任何内容,并且在我尝试时它不会显示任何错误,它只是呼应我的行"错误:"
getDiff("validTable");
function getDiff($regNr) {
global $servername, $username, $password, $dbname;
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
//todo
$sql = "SELECT * FROM $regNr ORDER BY id LIMIT 1";
$result = $conn->query($sql);
if ($result === TRUE) {
echo "done";
} else {
$error = $result->error;
echo "Error: " . $error;
}
$conn->close();
}
但是当我使用它插入数据库时
$query = "CREATE TABLE IF NOT EXISTS $regNr ( `id` MEDIUMINT NOT NULL AUTO_INCREMENT, `mail` INT NOT NULL , `price` INT NOT NULL , `views` INT NOT NULL , `the_date` DATE NOT NULL , `time` VARCHAR(5) NOT NULL, PRIMARY KEY (id) )";
runQuery($query);
function runQuery($todo) {
global $servername, $username, $password, $dbname;
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
//todo
$sql = $todo;
if ($conn->query($sql) === TRUE) {
echo "done";
} else {
echo "Error: " . $conn->error;
}
$conn->close();
}
它工作得很好,很花花公子。我做错了什么?!这简直让我发疯了!
它只显示"错误",因为您的query
成功并返回不等于True
的mysql object
,因此它不会回显done
参见 (http://php.net/manual/en/mysqli.query.php)
失败时返回 FALSE。成功选择、显示、描述或 EXPLAIN 查询 mysqli_query() 将返回一个mysqli_result对象。为 其他成功的查询 mysqli_query() 将返回 TRUE。
使用以下代码更改代码以使其正常工作:
if ($conn->query($sql) === FALSE) {
echo "Error: " . $conn->error;
} else {
echo "done";
}
基本上是转动if,以便它检查FALSE或非FALSE。
很可能您还希望将结果存储在变量中,例如:
if ($result = $conn->query($sql) === FALSE) {
稍后使用$row = $result->fetch_array()
或$row = $result_fetch_assoc()
来获取数据。
mysqli_query
失败时返回 FALSE。成功选择、显示、描述或EXPLAIN 查询 mysqli_query() 将返回一个mysqli_result对象。为其他成功的查询 mysqli_query() 将返回 TRUE。
根据此条件
if ($conn->query($sql) === TRUE) {
您从查询中得到mysqli_result
,这不等于 TRUE,并且您总是进入错误条件
要从查询中获取数据,请使用fetch_array
$row = $result->fetch_array(MYSQLI_NUM);
printf ("%s (%s)'n", $row[0]);
要获取错误表单查询,我们使用$conn->error
而不是$result->error
它需要您的连接变量而不是您的结果变量
阅读 http://php.net/manual/en/mysqli.error.php