小部分的PHP / mysql代码死了。不知道为什么

时间:2015-12-30 15:08:39

标签: php mysql

我很少编程。我只知道足够危险,因为他们说,我只是组装一些代码来获得我想要的东西。我的代码似乎死于$sql查询语句。它永远不会返回任何数据。它应该显示存在的13条记录,但它表示没有返回。我猜这是某种语法错误?

<?php
$host = 'myipaddress';
$user = 'myuser';
$pass = 'mypass';
$db = 'mydatabase';

$conn = mysql_connect($host, $user, $pass, $db) or die("Can not connect." . mysql_error());

// Create connection
//$conn = mysqli_connect($host, $user, $pass, $db);
// Check connection
if (!$conn) {
die("Connection failed: ");
}

$sql = "SELECT * FROM pages WHERE pid > '5'";
$result = mysql_query($conn, $sql);

if (mysql_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
    echo "id: " . $row["pid"]. " - Name: " . $row["title"]. "<br>";
}
} else {
echo "0 results";
}

mysql_close($conn);
?>

3 个答案:

答案 0 :(得分:1)

您正在使用mysql_ API,直到您尝试在此处获取行,您正在使用mysqli_。那不行。

while($row = mysqli_fetch_assoc($result)) {
    echo "id: " . $row["pid"]. " - Name: " . $row["title"]. "<br>";
}

Your script is at risk for SQL Injection Attacks.stop using mysql_* functions。已在PHP 7中删除These extensions。了解preparedPDOMySQLi语句,并考虑使用PDO,it's really pretty easy

编辑:您的连接( Good Eyes Ralph!)字符串无效,因为mysql_connect()不接受数据库作为连接的一部分。您必须使用附加功能mysql_select_db()来选择数据库。

此外,没有必要在mysql_query()中指定连接链接,但如果这样做,则应该是第二个参数:

$result = mysql_query($sql, $conn);

答案 1 :(得分:1)

你的代码有点不对。

mysql_connect($host, $user, $pass, $db)

mysql_connect()使用3个参数,第4个参数不符合您的预期。

您需要使用mysql_select_db() http://php.net/manual/en/function.mysql-select-db.php

然后,

$result = mysql_query($conn, $sql);

连接在mysql_中排在第二位。

然后你混合了一个不与mysqli_fetch_assoc库混合的MySQLi函数mysql_

所以,只需使用完整的MySQLi库

或PDO:

随着准备好的陈述:

如果查询失败,请检查实际错误:

error reporting添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:只应在暂存时进行显示错误,而不是生产。

正如你所看到的,我没有给你一个完整的重写,因为我觉得在“教一个人如何钓鱼......”,将终身喂养,而不是“扔他们一条鱼......”,只喂他们一天(眨眼)。

答案 2 :(得分:0)

您需要使用mysql_fetch_assoc()代替mysqli_fetch_assoc(),因为之前的功能基于mysql_*,而不是mysqli_*

if (mysql_num_rows($result) > 0) {
// output data of each row
while($row = mysql_fetch_assoc($result)) {
    echo "id: " . $row["pid"]. " - Name: " . $row["title"]. "<br>";
}
} else {
echo "0 results";
}