У меня проблема с MySQL. У меня есть PHP-скрипт, который возвращает массив в данные JSON из базы данных.
Я получил сообщение ‘echo’ об успешном соединении, но мой результат равен нулю массива.
В результате на Explorer я:
Connected successfully
query: SELECT name,id FROM rz_DWzZ'
result:
RESULT:[]
Это этот сценарий.
$conn = mysql_connect($servername, $username, $password);
mysql_select_db($database);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
$return_arr = array();
$qstring = "SELECT name,id FROM rz_DWzZ";
$result = mysql_query($qstring,$conn);
echo "<br>query: ".$qstring."<br>";
echo "<br>result: ".$result."<br>";
while ($row = mysql_fetch_assoc($result))//loop through the retrieved values
{
$row['name']=htmlentities(stripslashes($row['name']));
$row['id']=(int)$row['id'];
array_push($return_arr,$row);
}
mysql_close($conn);
echo "<br>RESULT:".json_encode($return_arr);
Вы не проверяли на неудачу должным образом. Функции mysql _ * () возвращают логическое значение FALSE при сбое, которое echo
будет печататься как невидимая строка нулевой длины.
Вы должны явно проверить это:
$result = mysql_query(...) or die(mysql_error());
^^^^^^^^^^^^^^^^^^^^^^--method #1
if ($result === false) { // method #2
die(mysql_error());
}
И, конечно, вы не должны использовать эти функции в любом случае. Они устарели / устарели, и ваш код теперь бесполезен в новых версиях PHP. Вы должны использовать mysqli или PDO для любой новой разработки.
Кроме того, у вас есть множество других ошибок:
if ($conn->connect_error) {
библиотека функций mysql _ * () НИКОГДА не была объектно-ориентированной. Это чисто процедурно, и не имеет абсолютно НЕТ поддержки объектов вообще. Поэтому этот тест соединения всегда будет неудачным, так как $conn->connect_error
всегда будет иметь значение null, что также преобразуется в логическое значение false, означающее, что вы получите ложноположительный результат для успеха.
Других решений пока нет …