我有一些PHP/SQL寫入來填充選擇列表與數據庫中的數據與選項填充基於文本框中的先前輸入$ pk完全接受,是一個有效的ARTICLE_NO ,並且查詢在由mysql直接執行時完美工作。我已經把輸出語句放在每個事件之後,並且除了執行之外的所有事件。 while循環從不輸入,我不確定原因。這裏是我的代碼:語句導致while循環錯誤
編輯:我已經縮小了問題的事實,即返回0行,但我不知道爲什麼,因爲在phpmyadmin相同的查詢給出正確的結果。
if (!$getRecords->fetch()) {
printf("<p>ErrorNumber: %d\n", $getRecords->errno);
}
它表明錯誤號是0,所以沒有記錄被取出,並沒有錯誤,但它是一個有效的查詢。
<?php
ini_set('display_errors', '1');
error_reporting(E_ALL);
$pk = $_GET["pk"];
$con = mysqli_connect("localhost", "", "", "");
if (!$con) {
echo "Can't connect to MySQL Server. Errorcode: %s\n". mysqli_connect_error();
exit;
}
$con->set_charset("utf8");
echo "test outside loop";
if(1 < 2) {
echo "test inside loop";
$query1 = 'SELECT ARTICLE_NO FROM AUCTIONS WHERE ARTICLE_NO = ?';
if ($getRecords = $con->prepare($query1)) {
echo "inside second loop";
$getRecords->bind_param("i", $pk);
echo "test after bind param";
$getRecords->execute();
echo "test after bind execute";
$getRecords->bind_result($ARTICLE_NO);
echo "test after bind result";
while ($getRecords->fetch()) {
echo "test inside while";
echo "<h1>".$ARTICLE_NO."</h1>";
}
}
}
編輯:
我試着用這個代碼:
<?php
$mysqli = new mysqli("localhost", "", "", "");
$pk = $_GET["pk"];
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* prepare statement */
if ($stmt = $mysqli->prepare("SELECT ARTICLE_NAME, WATCH FROM AUCTIONS WHERE ARTICLE_NO = ? LIMIT 5")) {
$stmt->bind_param("i", $pk);
$stmt->execute();
/* bind variables to prepared statement */
$stmt->bind_result($col1, $col2);
/* fetch values */
while ($stmt->fetch()) {
printf("%s %s\n", $col1, $col2);
}
/* close statement */
$stmt->close();
}
/* close connection */
$mysqli->close();
?>
此作品,未經$ PK,如果我拿走它工作正常的參數。通過GET獲取pk不是問題,因爲如果我分配$ pk = 1;相反,它仍然失敗。
編輯:問題是,mysqli無法處理bigint,我現在使用k作爲字符串,它工作正常。
我怎麼會做這麼代碼時,郵編已經進入了只執行? – AJJ
放一個,如果在開始時: 如果(isset($ _ POST [「後」]))從數據庫 –
開始檢索數據謝謝你,沒有更多的服務器錯誤,現在我只是想獲得的代碼做我也需要它 – AJJ