PHP,HTML和SQL:如何获取表行号并作为参数发送

时间:2017-10-25 00:59:51

标签: php html mysql

我连接到我的数据库并获取表格。我创建了一个HTML表来列出我的所有公司以及" Read" "更新"和"删除"在每一行的末尾。如果我点击"阅读"在其中一家公司旁边,我如何获得该特定公司(或该特定行号),以便我可以将其作为参数传递。我想在该行显示该公司的信息。谢谢! enter image description here `

C:\nativescript\mobile>npm run build-android-bundle --uglify
npm ERR! Windows_NT 6.1.7601
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "build-android-bundle" "--uglify"

npm ERR! node v6.11.0

npm ERR! npm  v3.10.10

npm ERR! Invalid version: "1"

npm ERR!
npm ERR! If you need help, you may report this error at:

npm ERR!     <https://github.com/npm/npm/issues>

npm ERR! Please include the following file with any support request:

npm ERR!     C:\nativescript\mobile\npm-debug.log

=================================================================

0 info it worked if it ends with ok

1 verbose cli [ 'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli   'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli   'run',
1 verbose cli   'build-android-bundle',
1 verbose cli   '--uglify' ]

2 info using npm@3.10.10

3 info using node@v6.11.0

4 verbose stack Error: Invalid version: "1"
4 verbose stack     at Object.fixVersionField (C:\Program Files\nodejs\node_modules\npm\node_modules\normalize-package-data\lib\fixer.js:191:13)
4 verbose stack     at C:\Program Files\nodejs\node_modules\npm\node_modules\normalize-package-data\lib\normalize.js:32:38
4 verbose stack     at Array.forEach (native)
4 verbose stack     at normalize (C:\Program Files\nodejs\node_modules\npm\node_modules\normalize-package-data\lib\normalize.js:31:15)
4 verbose stack     at final (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-json\read-json.js:349:5)
4 verbose stack     at then (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-json\read-json.js:124:5)
4 verbose stack     at ReadFileContext.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-json\read-json.js:295:20)
4 verbose stack     at ReadFileContext.callback (C:\Program Files\nodejs\node_modules\npm\node_modules\graceful-fs\graceful-fs.js:78:16)
4 verbose stack     at FSReqWrap.readFileAfterOpen [as oncomplete] (fs.js:366:13)

5 verbose cwd C:\nativescript\mobile

6 error Windows_NT 6.1.7601

7 error argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "build-android-bundle" "--uglify"

8 error node v6.11.0

9 error npm  v3.10.10

10 error Invalid version: "1"

11 error If you need help, you may report this error at:
11 error     <https://github.com/npm/npm/issues>

12 verbose exit [ 1, true ]

1 个答案:

答案 0 :(得分:2)

根据以下代码制作所需的操作。

首先检查(GET)数组是否(不)为空且等于动作,并使用双引号值(带有转义双引号)正确回显$corp变量。

请注意,我在PHP_EOL的末尾添加了$table .= "<tr><td>"...,以便生成干净的HTML,这有助于在查看HTML源时进行调试。对于像这样的事情来说,这是一个很好的调试工具,相信我。

让代码显示在一个长行中,非常难以可以使用。

附注:我会自行决定是否留下“创建”链接,因为问题中没有提到这一点,而且可能涉及的范围太宽。

我还可以假设您的Lab3(文件夹)正在使用索引文件,并将用于执行所有这些操作。

如果../Lab3?action不适合你,那么你可能需要使用类似的东西 而是../Lab3/index.php?action...../Lab3/your_file.php?action...

$table = "<table>" . PHP_EOL;
foreach ($corps as $corp) {

    $table .= "<tr><td>" . $corp['corp'] . "</td><td>" . "<a href=\"../Lab3?action=read&corp=$corp\">Read</a>" . "</td><td>" . "<a href=\"../Lab3?action=update&corp=$corp\">Update</a>" . "</td><td>" . "<a href=\"../Lab3?action=delete&corp=$corp\">Delete</a>" . "</td></tr>" . PHP_EOL;
}
$table .= "</table>" . PHP_EOL . ' <a href="../Lab3">Create</a>';


if(!empty($_GET['action'])){

    if($_GET['action'] == 'read'){
        echo $read = "<br>Record to read: " . $_GET['corp'];
        // You can place your query here
    }

    if($_GET['action'] == 'update'){
        echo $update = "<br>Record to update: " . $_GET['corp'];
        // You can place your query here
    }

    if($_GET['action'] == 'delete'){
        echo $delete = "<br>Record to delete: " . $_GET['corp'];
        // You can place your query here
    }


}

但是,我必须声明这对SQL注入是开放的,您需要使用预准备语句。你已经在使用PDO了,所以这是一个好的开始。

注意:使用$var = (int)$_GET['integer_array'];(作为示例),也有助于防止SQL注入,如果该值是整数则给出。如果没有,那么您不能对字符串值使用(int)

参考文献: