我最近安装了MAMP。但是我不能成功地从php执行MySQL查询。我可以从php连接到MySQL,但我所有的查询都返回为NULL。我没有收到任何错误消息或其他消息来帮助我诊断问题。
奇怪的是,我可以用phpMyAdmin和MySQLWorkbench成功地查询MySQL。
这是我的代码:
<?php
$link = mysqli_init();
$con = mysqli_real_connect($link, 'localhost', 'root', 'root', 'mrmk', 8889);
$db = 'mrmk';
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
echo "Host information: " . mysqli_get_host_info($link) . PHP_EOL;
$sql = "SHOW TABLES FROM `$db`";
$result = mysqli_query($con, $sql);
echo "</br>" . "1. MySQL Error: " . mysqli_error();
echo "</br>" . "result: ";
var_dump($result);
$sql = "SHOW TABLES FROM $db";
$result = mysqli_query($con, $sql);
echo "</br></br>2. MySQL Error: " . mysqli_error();
echo "</br>" . "result: ";
var_dump($result);
$sql = "SELECT * FROM `transactionTable` WHERE `attorneyName` LIKE ''%howard%''";
$result = mysqli_query($con, $sql);
echo "</br></br>3. MySQL Error: " . mysqli_error();
echo "</br>" . "result: ";
var_dump($result);
if (!$result) {
echo "</br></br>" . "4. MySQL Error: " . mysqli_error();
exit;
} else {
echo "we should have results.";
}
while ($row = mysqli_fetch_row($result)) {
echo "Table: {$row[0]}'n";
}
mysqli_free_result($result);
?>
当我通过localhost访问页面时,我得到的是:
Host information: Localhost via UNIX socket
1. MySQL Error:
result: NULL
2. MySQL Error:
result: NULL
3. MySQL Error:
result: NULL
4. MySQL Error:
当我从phpMyAdmin执行相同的查询时,它们会成功执行并返回非NULL结果。
我有两个问题:
- 我可以添加哪些代码来帮助诊断此问题
- 我的代码中有错误导致我得到NULL结果吗
您在PHP中启用了mysqli扩展吗?检查apache错误日志。以这个问题为例。mysqli在默认情况下是禁用的,您需要取消对行的注释
extension=php_mysqli
在CCD_ 1文件中。
要回答问题#1,您可能会发现它有助于echo
您的$sql变量,以确保您的查询是有效的以及您想要的查询。