MySQL和PHP错误处理

问题描述:

我有一个查询,从通过数据库用户和搜索需要的投入。MySQL和PHP错误处理

现在取决于输入的结果的大小可以变化。

查询

$sql = "SELECT * FROM `$drop` WHERE `Stop Name` = '$input'"; 
$result = mysqli_query($conn, $sql); 

结果

$rows = $result->num_rows; 

for ($j = 0 ; $j < $rows ; ++$j) { 
    $result->data_seek($j); 
    $row = $result->fetch_array(MYSQLI_NUM); 

    //Display Results 

    for ($j = 0 ; $j <= 124 ; ++$j) echo "<td>$row[$j]</td>"; 
} 

这给了我一个未定义的偏移误差时,他们小于124个变量显示(即可能被显示的大部分)。

在代码中添加我的@忽略这些错误。

+4

为什么不直接使用'foreach'循环呢?另外,不要忽略错误,解决它们。 – Epodax

+1

不要使用@来隐藏错误消息,请尽量先解决错误! – pes502

+0

[小博](http://bobby-tables.com/)说:[你的脚本是在对SQL注入攻击的风险。(http://*.com/questions/60174/how-can-i-prevent -sql -injection-in-php)了解[MySQLi]的[prepared](http://en.wikipedia.org/wiki/Prepared_statement)语句(http://php.net/manual/en/mysqli.quickstart .prepared-statements.php)。即使[转义字符串](http://*.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)是不安全的! –

你应该不是简单地抑制错误这样。

相反,停止循环,当你已经达到了数组末尾:

for ($j = 0 ; $j < count($row) ; ++$j) echo "<td>$row[$j]</td>"; 

旁注:您使用的是相同的迭代器$j两个循环。这不会按预期工作。