请忍受我,我是新来的 - 我刚刚开始使用PHP。说实话,这是我的第一个项目,所以请怜悯。 :)
$row = mysql_fetch_array(mysql_query("SELECT message FROM data WHERE code = '". (int) $code ."' LIMIT 1"));
echo $row['message'];
这是否足以根据预定义的'$ code'变量从数据库中获取消息?我已经成功连接到数据库。
这段代码似乎什么都没有 - 只是一个空白区域。 :(
我将不胜感激任何建议和帮助。 :)
更新:
现在代码如下:
<?php
error_reporting(E_ALL);
// Start MySQL Connection
REMOVED FOR SECURITY
// Check if code exists
if(mysql_num_rows(mysql_query("SELECT code FROM data WHERE code = '$code'"))){
echo 'Hooray, that works!';
$row = mysql_fetch_array(mysql_query("SELECT message FROM data WHERE code = '". (int) $code ."' LIMIT 1")) or die(mysql_error());
echo $row['message'];
}
else {
echo 'That code could not be found. Please try again!';
}
mysql_close();
?>
答案 0 :(得分:1)
最好不要像这样将函数链接在一起,因为如果查询失败,fetch也会失败并导致错误消息,这可能实际上并不能说明真正的问题是什么。
另外,不要在SQL查询中围绕整数值包装引号。
if(! $rs = mysql_query("SELECT message FROM data WHERE code = ". (int) $code ." LIMIT 1") ) {
die('query failed! ' . mysql_error());
}
$row = mysql_fetch_array($rs);
echo $row['message'];
标准的“不要使用mysql_*
函数,因为弃用了等等等等等等......”
如果您仍然收到空白回复,则可能需要检查是否未返回0行。进一步测试还包括echo
查询它是否正确形成,并自行运行以查看它是否返回正确的数据。
答案 1 :(得分:0)
一些意见:
mysql_*
。它被弃用了。使用mysqli_*函数或PDO Library $code
)时,请使用mysqli_real_escape_string或PDO's quote函数来阻止SQL注入使用PDO的示例:
//connect to database
$user = 'dbuser'; //mysql user name
$pass = 'dbpass'; //mysql password
$db = 'dbname'; //name of mysql database
$dsn = 'mysql:host=localhost;dbname='.$db;
try {
$con = new PDO($dsn, $user, $pass);
} catch (PDOException $e) {
echo 'Could not connect to database: ' . $e->getMessage();
die();
}
//escape code to prevent SQL injection
$code = $con->quote($code);
//prepare the SQL string
$sql = 'SELECT message FROM data WHERE code='.$code.' LIMIT 1';
//do the sql query
$res = $con->query($sql);
if(!$res) {
echo "something wrong with the query!";
echo $sql; //for development only; don't output SQL in live server!
die();
}
//get result
$row = $res->fetch(PDO::FETCH_ASSOC);
//output result
print_r($row);